
// Example of using recursion to process "Recursive Data"

class File {

	String getName();
	...
}


class Folder {

	String getName();
	Iterator fileIterator();
	Iterator folderIterator();
	...
}


void search(Folder folder, String name) {
	if (folder.getName().equals(name)) {
		// print folder path
	}

	Iterator it = folder.fileIterator();
	while (it.hasNext()) {
		File file = (File)it.next();
		if (file.getName().equals(name)) {
			// print file path
		}
	}

	it = folder.folderIterator();
	while (it.hasNext()) {
		Folder subFolder = (Folder)it.next();
		search(subfolder, name);
	}
}

